From ad6eddb742577d182e634785bcfaf92732a50024 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Thu, 28 Aug 2014 16:05:10 +0200 Subject: [PATCH] x86/ats: Disable Address Translation Services by default Xen cannot safely use any ATS functionality until it gains asynchronous queued invalidation support, because of the current synchronous wait for completion. Do not turn ATS on by default. While editing the default in the command line documentation, correct the statement regarding PCI Passthrough. ATS is purely a performance optimisation, and is certainly not required for PCI Passthrough to function. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Acked-by: Suravee Suthikulpanit --- docs/misc/xen-command-line.markdown | 9 ++++++--- xen/drivers/passthrough/x86/ats.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/misc/xen-command-line.markdown b/docs/misc/xen-command-line.markdown index a8cab59eaa..5f4680fe1a 100644 --- a/docs/misc/xen-command-line.markdown +++ b/docs/misc/xen-command-line.markdown @@ -176,10 +176,13 @@ developers wishing Xen to fall back to older timing methods on newer hardware. ### ats > `= ` -> Default: `true` +> Default: `false` + +Permits Xen to set up and use PCI Address Translation Services. This is a +performance optimisation for PCI Passthrough. -Permits Xen to set up and use PCI Address Translation Services, which -is required for PCI Passthrough. +**WARNING: Xen cannot currently safely use ATS because of its synchronous wait +loops for Queued Invalidation completions.** ### availmem > `= ` diff --git a/xen/drivers/passthrough/x86/ats.c b/xen/drivers/passthrough/x86/ats.c index 1e3e03ab40..436eadac61 100644 --- a/xen/drivers/passthrough/x86/ats.c +++ b/xen/drivers/passthrough/x86/ats.c @@ -20,7 +20,7 @@ LIST_HEAD(ats_devices); -bool_t __read_mostly ats_enabled = 1; +bool_t __read_mostly ats_enabled = 0; boolean_param("ats", ats_enabled); int enable_ats_device(int seg, int bus, int devfn, const void *iommu) -- 2.30.2